/**
 * API 包装工具
 * 提供统一的 API 调用错误处理
 */
import { getCurrentUserId } from "@/utils/business/user/auth"

/**
 * API 调用包装函数
 * @param {Function} apiCall - API 调用函数
 * @returns {Promise}
 */
export function apiWrapper(apiCall) {
  try {
    const result = apiCall()

    if (result instanceof Promise) {
      return result.catch((error) => {
        if (import.meta.env.DEV) {
          console.error('[API Error]', error)
        }
        return Promise.reject(error)
      })
    }

    return result
  } catch (error) {
    if (import.meta.env.DEV) {
      console.error('[API Sync Error]', error)
    }
    return Promise.reject(error)
  }
}

/**
 * 需要用户认证的 API 包装函数
 * @param {Function} apiCall - API 调用函数，接收 userId 参数
 * @returns {Promise}
 */
export function apiWrapperWithAuth(apiCall) {
  return apiWrapper(() => {
    const userId = getCurrentUserId()
    return apiCall(userId)
  })
}
